#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 101

void
sdeleten (char *s, int n) /* удаляет первые n элеменов из строки s */
{
	while (*(s + n - 1) != NULL) {
		*s = *(s + n);
		++s;
	}
}


/*int
my_stratoi (const char* s)
{
	return 0;
}*/


double
dpoweri (double a, int n)
{
	register int ret = a;
	if (n == 0)
		return 1.0;
	else if (n > 0)
		while (--n > 0)
			ret *= a;
	return ret;
}


int
main (int argc, char **argv)
{
	char polynom[MAXLEN];
	double x = 0;
	double result = 0, var = 0; /* var - значение члена многочлена */
	char *px, *sign;
	int power=1, k=1; /* power - степень, k - коэффициент (+/-) */
	freopen("polynom.in", "r", stdin);
	freopen("polynom.out","w",stdout);
	memset(polynom, 0, sizeof(polynom));

	scanf("%s", polynom);
	scanf("%lf", &x);

	while ((px = strchr(polynom, 'x')) != NULL) { /* ищем x-ы */
		if (*(px + 1) == '^') { /* возводим в степень что нашли */
			power = atoi(px+2);
			sign = px + 2;
			while (*sign != '-' && *sign != '+' && *sign != NULL)
				++sign;
			sdeleten(px + 1, sign - px - 1); /* удаляем мусор (x пока оставляем) ; тут мы закончили со степенями */
		}

		if (px > polynom) { /* если x не в самом начале строки */
			if (*(px - 1) == '-') {
				k = -1;
				sdeleten(px - 1, 2); /* удаляем знак вместе с x*/

			} else if (*(px - 1) == '+') {
				k = 1;
				sdeleten(px - 1, 2); /* удаляем знак вместе с x */

			} else if (*(px - 1) == '*') { /* если есть умножение */
				sign = px - 2;
				while (sign > polynom && *sign != '-' && *sign != '+')
					--sign; /* ищем начало коэффициента при x */

				(*sign == '-') ? k = -1 * abs(atoi(sign)) : k = abs(atoi(sign)); /* записываем в k знач. коэф. (atoi() распознаёт минусы?) */
				sdeleten(sign, px - sign + 1); /* удаляем множитель (вместе с x) */
			}
		} else { /* X в начале строки и его надо удалить */
			sdeleten(px, 1);
		}
		result += k * dpoweri(x, power);
		k = power = 1; /* сбрасываем для след. итерации */
	}
	while (strlen(polynom) > 0) { /* используем sign не по назначению */
		result += strtod(polynom, &sign); /* sign - указатель на непреобразованную часть (k&r) */
		sdeleten(polynom, sign - polynom);
	}

	printf("%.lf\n", result);
	return 0;
}
